

insert into asm_GISEl_1

select distinct 

substr(ex.CODICE_UTENTE_BT,1,22),
substr(ex.CODICE_UTENTE_BT,instr(ex.CODICE_UTENTE_BT,'_',-1,2)+1,(instr(ex.CODICE_UTENTE_BT,'_',-1)-instr(ex.CODICE_UTENTE_BT,'_',-1,2)-1)),-- (LINEA CON 2 DIGIT)
substr(ex.CODICE_UTENTE_BT,instr(ex.CODICE_UTENTE_BT,'_',-1)+1,9),  --(di 9 cifre)
a.Fase,
a.POD,
substr(ex.CODICE_UTENTE_BT,instr(ex.CODICE_UTENTE_BT,'_',-1)+1,9), 
decode (a.EM,'X','N','N','N','S') ,
case when a.EM ='N' then concat(concat('05',substr(a.Matricola_contatore,11,2)),substr(a.Matricola_contatore,1,9)) 
       else a.Matricola_contatore end,
concat(to_char(a.Data_Inizio_Contratto,'yyyymmdd'),'000000') data_inizio_contratto, --AAAAMMGG000000

case when TO_CHAR(a.Data_Fine_Contratto)= '00-000-00' then '99991231235959' else 
     concat(to_char(a.Data_Fine_Contratto,'yyyymmdd'),'235959')  end data_fine_contratto,

-- AAAAMMGG000000 oppure 99993112000000
a.Tipo_di_contratto,
a.Codice_contratto,
decode(a.Stato_Contrattuale,'A','A','N'),
a.Tipo_Cliente,
a.Potenza_disponibile  ,
a.RT,
a.Ragione_Sociale,
a.Codice_Cliente,
a.Indirizzo_di_Fornitura,
a.Indirizzo_di_Recapito,
       
a.Comune,
ex.Ambito,
a.Codice_venditore,
a.Tipo_Fornitura,
ex.data_inizio,
ex.data_fine


 from 
(select distinct ag.* from (
--select distinct max(seq) seq,pod from asm_GISEL where tensione = 'B' group by pod) b,asm_gisel ag
select distinct seq,pod --, substr(seq,1,8) seq1,substr(seq,9,8) contr 
from asm_GISEL 
where 
substr(seq,1,4) >= ^ANNO di Competenza aaaa;N;NUMERICO^^
or substr(seq,1,8) ='00000000'

) b,asm_gisel ag

where ag.seq=b.seq
and   ag.pod=b.pod
and ag.tensione = 'B') a,

asm_gisel_exe ex



where 
 ex.pod=a.pod
 --and ex.pod like'%1941'
 --and a.DATA_INIZIO_CONTRATTO=to_date('01/01/2011','dd/mm/yyyy')
 and (
 (a.data_inizio_contratto >= ex.data_inizio and  a.data_fine_contratto <= ex.data_fine) or
 (a.data_inizio_contratto <= ex.data_inizio and  a.data_fine_contratto <= ex.data_fine and a.data_fine_contratto >= ex.data_inizio) or
  (a.data_inizio_contratto <= ex.data_fine and  a.data_fine_contratto >= ex.data_fine and a.data_fine_contratto >= ex.data_fine) or
 (a.data_inizio_contratto <= ex.data_inizio and  a.data_fine_contratto >= ex.data_fine) )
